package org.china.lanzhou.grid;

import org.china.lanzhou.atom.AtomManager;
import org.china.lanzhou.session.Trigger;

import java.util.Set;

public interface Grid {

    /**
     * 安装新元素
     * @param atomManager
     */
    void install(AtomManager atomManager); //  安装建立 关系

    /**
     * 卸载元素
     * @param atomManager
     */
    void uninstall(AtomManager atomManager); // 卸载元素及关系

    /**
     * 触发元素
     * @param index
     */
    void trigger(int index); // 触发


    /**
     * 离合器
     * @param time
     */
    void clutch(int time);

    Set<Element> selectElements(int index, int antenna);

    Set<Element> selectElements(int index, int... antennas);

    double Related(int index, int target);

    Element get(int index);

    boolean contains(int index);

    void forget(int index);

    void disable(int index, boolean disable);

    Element createElement(int index);

    void sticky(int index, int targetIndex, double degree);

    // 粘粘解除
    void disSticky(int index, int targetIndex);

    void print();
}
